#include "list.hpp"
#include "Student.hpp"
using namespace std;

void addStudentInfo();
void autoDistributeOneStu();
void autoDistributeOneByName();
void autoDistributeOneById();
void manualDistribute();
void manualDistributeByName();
void manualDistributeById();

void addStudentInfo(){
	system("cls");
	while(1){
		int k;
		printf("---------------------\n");
		printf("| 安排学生入住                      \n");
        printf("| 0. 退出                           \n");
        printf("| 1. 随机安排                  \n");
        printf("| 2. 手动安排                   \n");
        printf("---------------------\n");
        printf("请输入上面的标号: ");
		cin>>k;
        printBlank();
        if (k==1) autoDistributeOneStu();
        if (k==2) manualDistribute();
        if (k==0) break;
    }
}


void autoDistributeOneStu(){
	//system("cls");
	while(1){
		int k;
		printf("---------------------\n");
		printf("| 随机安排学生入住                      \n");
        printf("| 0. 退出                           \n");
        printf("| 1. 通过姓名安排                   \n");
        printf("| 2. 通过学号安排                   \n");
        printf("---------------------\n");
        printf("请输入上面的标号: ");
		cin>>k;
        printBlank();
        if (k==1) autoDistributeOneByName();
        if (k==2) autoDistributeOneById();
        if (k==0) break;
    }
}

void manualDistribute(){
	//system("cls");
	while(1){
		int k;
		printf("---------------------\n");
		printf("| 按计划安排学生入住                      \n");
        printf("| 0. 退出                           \n");
        printf("| 1. 通过姓名安排                   \n");
        printf("| 2. 通过学号安排                   \n");
        printf("---------------------\n");
        printf("请输入上面的标号: ");
		cin>>k;
        printBlank();
        if (k==1) manualDistributeByName();
        if (k==2) manualDistributeById();
        if (k==0) break;
    }
}
void autoDistributeOneByName(){
	//system("cls");
	while(1){
        printf("请输入要安排住宿学生的姓名:");
        string s;
        cin>>s;
        Student* stu= allStudents.findByName(s);
        if (stu){
            string k="1";
            if (stu->getbedId()){
                cout<<"此人已入住"<<stu->getRoom()<<",是否更改"<<endl;;
                printf("--------------------------\n");
                printf("   1.确认更改     0.不更改\n");
                printf("--------------------------\n");
                string k;
                cin>>k;
            }
            if (k=="1"){
                if(stu->getbedId())allBuildings.delOne(stu);
                allBuildings.autoDistributeOne(stu);
                printf("安排住宿成功\n");
            }
        }else printf("未找到此人\n");
    
        printf("==========================\n");
        printf("   1.继续安排     0.退出\n");
        printf("==========================\n");
        string k;
		cin>>k;
        if (k=="0") break;
    }
}

void autoDistributeOneById(){
	//system("cls");
	while(1){
        printf("请输入要安排住宿学生的学号:");
        int id;
        cin>>id;
        Student* stu= allStudents.findById(id);
        if (stu){
            string k="1";
            if (stu->getbedId()){
                cout<<"此人已入住"<<stu->getRoom()<<",是否更改"<<endl;;
                printf("--------------------------\n");
                printf("   1.确认更改     0.不更改\n");
                printf("--------------------------\n");
                string k;
                cin>>k;
            }
            if (k=="1"){
                if(stu->getbedId())allBuildings.delOne(stu);
                allBuildings.autoDistributeOne(stu);
                printf("安排住宿成功\n");
            }
        }else printf("未找到此人\n");

        printf("==========================\n");
        printf("   1.继续安排     0.退出\n");
        printf("==========================\n");
        string k;
		cin>>k;
        if (k=="0") break;
    }
}

void manualDistributeByName(){
	//system("cls");
	while(1){
		string s;
		int room[3];
		printf("---------------------\n");
        printf("请输入学生的姓名：");
        cin>>s;
        Student* stu= allStudents.findByName(s);
        if (stu){
            string k="1";
            if (stu->getbedId()){
                cout<<"此人已入住"<<stu->getRoom()<<",是否更改"<<endl;;
                printf("--------------------------\n");
                printf("   1.确认更改     0.不更改\n");
                printf("--------------------------\n");
                string k;
                cin>>k;
            }
            if (k=="1"){
                string s;
                printf("请输入学生入住的宿舍：\n");
                cin>>s;
                toRoom(s, room);
                if(stu->getbedId())allBuildings.delOne(stu);
                allBuildings.manualDistributeOne(stu,room);
                printf("安排住宿成功\n");
            }
        }else printf("未找到此人\n");
        printf("==========================\n");
        printf("   1.继续安排     0.退出\n");
        printf("==========================\n");
        string k;
		cin>>k;
        if (k=="0") break;
    }
}

void manualDistributeById(){
	//system("cls");
	while(1){
		int id,room[3];
		string s;
		printf("---------------------\n");
        printf("请输入学生的学号：");
        cin>>id;
        Student* stu= allStudents.findById(id);
        if (stu){
            string k="1";
            if (stu->getbedId()){
                cout<<"此人已入住"<<stu->getRoom()<<",是否更改"<<endl;;
                printf("--------------------------\n");
                printf("   1.确认更改     0.不更改\n");
                printf("--------------------------\n");
                string k;
                cin>>k;
            }
            if (k=="1"){
                string s;
                printf("请输入学生入住的宿舍：\n");
                cin>>s;
                toRoom(s, room);
                if(stu->getbedId())allBuildings.delOne(stu);
                allBuildings.manualDistributeOne(stu,room);
                printf("安排住宿成功\n");
            }
        }else printf("未找到此人\n");
        printf("==========================\n");
        printf("   1.继续安排     0.退出\n");
        printf("==========================\n");
        string k;
		cin>>k;
        if (k=="0") break;
    }
}
